home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
GameStar 2004 April
/
Gamestar_61_2004-04_dvdb.iso
/
DVDStar
/
Editace
/
hltp.exe
/
{app}
/
Applications
/
QuArK
/
plugins
/
deckerutils.py
< prev
next >
Wrap
Text File
|
2004-01-05
|
5KB
|
146 lines
""" QuArK - Quake Army Knife
Utility functions by Decker@post1.tele.dk
"""
# Copyright (C) 1996-99 Armin Rigo
# THIS FILE IS PROTECTED BY THE GNU GENERAL PUBLIC LICENCE
# FOUND IN FILE "COPYING.TXT"
#
#$Header: /cvsroot/quark/runtime/plugins/deckerutils.py,v 1.6 2001/01/06 18:33:52 decker_dk Exp $
#
import quarkx
import quarkpy.mapentities
ObjectOrigin = quarkpy.mapentities.ObjectOrigin
def FindOriginTexPolyPos(entity):
"Find origin by searching for poly under entity which has the ORIGIN texture"
subpolys = entity.findallsubitems("", ":p", ":g")
for i in subpolys:
subfaces = i.findallsubitems("",":f",":g");
# Make sure that all faces on poly contains the ORIGIN texture
foundoriginpoly=1
for j in subfaces:
if not j["tex"]=="ORIGIN": # If just one face does not contain the ORIGIN texture, its not an origin-poly
foundoriginpoly=0
break
if foundoriginpoly==1:
return ObjectOrigin(i) # give me the origin of the poly
return None
def FindOriginFlagPolyPos(entity):
"Find origin by searching for poly under entity which has the Origin-texture-flag set"
subpolys = entity.findallsubitems("", ":p", ":g")
for i in subpolys:
subfaces = i.findallsubitems("",":f",":g");
# Make sure that all faces on poly contains the Origin-texture-flag
foundoriginpoly, flags = 1, 0
for j in subfaces:
try:
flags = int(j["Contents"])
except:
flags = 0
if not (flags & 16777216): # If just one face does not contain the Origin-texture-flag, its not an origin-poly
foundoriginpoly=0
break
if foundoriginpoly==1:
return ObjectOrigin(i) # give me the origin of the poly
return None
def NewXYZCube(x,y,z,tex):
p = quarkx.newobj("poly:p")
x,y,z = x*0.5, y*0.5, z*0.5
f = quarkx.newobj("east:f"); f["v"] = (x, -x, -x, x, 128-x, -x, x, -x, 128-x)
f["tex"] = tex
p.appenditem(f)
f = quarkx.newobj("west:f"); f["v"] = (-x, -x, -x, -x, -x, 128-x, -x, 128-x, -x)
f["tex"] = tex ; f["m"] = "1"
p.appenditem(f)
f = quarkx.newobj("north:f"); f["v"] = (-y, y, -y, -y, y, 128-y, 128-y, y, -y)
f["tex"] = tex ; f["m"] = "1"
p.appenditem(f)
f = quarkx.newobj("south:f"); f["v"] = (-y, -y, -y, 128-y, -y, -y, -y, -y, 128-y)
f["tex"] = tex
p.appenditem(f)
f = quarkx.newobj("up:f"); f["v"] = (-z, -z, z, 128-z, -z, z, -z, 128-z, z)
f["tex"] = tex
p.appenditem(f)
f = quarkx.newobj("down:f"); f["v"] = (-z, -z, -z, -z, 128-z, -z, 128-z, -z, -z)
f["tex"] = tex ; f["m"] = "1"
p.appenditem(f)
return p
def GetEntityChain(firsttargetname, list):
# Returns an ordered list of entities, which points to each other by target/targetname
newlist = []
for e in list:
if e.type == ':g':
newlist = newlist + e.findallsubitems("", ":e")
newlist = newlist + e.findallsubitems("", ":b")
else:
newlist.append(e)
def FindEntityByTargetname(name, list):
for e in list:
if (e["targetname"] == name):
return e, e["target"]
return None, None
nextname = firsttargetname
namelist = []
entlist = []
ent, nextname = FindEntityByTargetname(nextname, newlist)
if (ent is not None):
entlist.append(ent)
while ((nextname is not None) and (not nextname in namelist)):
namelist.append(nextname)
ent, nextname = FindEntityByTargetname(nextname, newlist)
if (ent is not None):
entlist.append(ent)
return entlist
def RegisterInToolbox(toolboxname, qtxfolder, obj):
# FIXME - Make so ':form' also can be added somewhere.
for t in quarkx.findtoolboxes(toolboxname):
for f in t[1].subitems:
if (f.shortname == qtxfolder):
# If object already is in toolbox, don't put it in again!
o = f.findname(obj.name)
if (o is None):
print "--adding"
f.appenditem(obj)
return
# Did not find a qtxfolder, create one
newf = quarkx.newobj(qtxfolder+".qctx")
print "--f"
newf.appenditem(obj)
print "--folder"
t[1].parent.appenditem(newf)
print "--folderadded"
return
# ----------- REVISION HISTORY ------------
#$Log: deckerutils.py,v $
#Revision 1.6 2001/01/06 18:33:52 decker_dk
#Use 4-spaces instead of 8-spaces 'tabs'
#
#Revision 1.5 2000/07/09 13:21:54 decker_dk
#New function
#
#Revision 1.4 2000/06/03 10:25:30 alexander
#added cvs headers
#
#Revision 1.3 2000/05/23 19:09:47 decker_dk
#Removed evil hidden TAB-characters
#
#